package com.zmn.plat.services.interfaces.user;

import java.util.List;

import com.zmn.common.dto.StatusDTO;
import com.zmn.plat.model.entity.user.User;
import com.zmn.plat.model.entity.user.UserQuery;

/**
 * @author nowind
 * @since 17/07/31 11:19
 */
public interface UserService {

    User findByKey(Integer userId);

    /**
     * 查询用户mobile是否已存在
     * 
     * @param mobile
     * @param userId
     *            排除的用户Id,修改时使用,新增时则使用0
     * @return
     */
    boolean findMobileExists(Long mobile, Integer userId);

    /**
     * 查询用户mail是否已存在
     * 
     * @param mail
     * @param userId
     *            排除的用户Id,修改时使用,新增时则使用0
     * @return
     */
    boolean findMailExists(String mail, Integer userId);

    List<User> listPageByQuery(UserQuery query);

    List<User> listByQuery(UserQuery query);

    Integer countByQuery(UserQuery query);

    Integer updateByKey(User user);

    Integer updateStatus(Integer userId, Integer stsatus);

    Integer updateStatus(User user);

    Integer updateStatusBatch(List<Integer> userIds, Integer status);

    Integer updateStatusBatch(StatusDTO dto);

    Integer updateUserName(User user);

    Integer updateAvatar(User user);

    Integer updateMobile(User user);

    Integer updateWx(User user);

    Integer updateGroup(User user);

    Integer updateAuthMobile(User user);

    Integer updateAuthMail(User user);

    Integer updateEditName(User user);

    Integer updateFocusWx(User user);

    Integer updatePassword(User user);

    Integer insert(User user);

    Integer deleteByKey(Integer userId);

}
